#ifndef __SEQQUEUE__H__
#define __SEQQUEUE__H__

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <unistd.h>
#include <string.h>

// 管理结构体
typedef struct queue
{
    //                 front       rear    (f/r+1)%size
    //                   ↓          ↓
    int *data; // 顺序表 |1|2|3|4|5| | | |
               //        ↑
               //       data（存储空间的总入口）
    int front;
    int rear;
    int size;  // 总大小
}queue;


// API 
queue *init_queue(int size);
bool en_queue(queue *q, int data);
bool out_queue(queue *q, int *pdata);
bool front_queue(queue *q, int *pdata); // 取队头元素
bool is_full(queue *q);
bool is_empty(queue *q);
void destroy_init(queue *q); // 将队列恢复初始状态
void destroy(queue *q);
void show(queue *q);

#endif